/*
 * BinarySortTree.h
 * 二叉排序树.
 * Created on: 2014年5月10日
 * Author: rock
 */

#ifndef BINARYSORTTREE_H_
#define BINARYSORTTREE_H_

/*
 * 二叉排序树（Binary Sort Tree）又称二叉查找树（Binary Search Tree），亦称二叉搜索树。
 * 它或者是一棵空树；或者是具有下列性质的二叉树：
 *（1）若左子树不空，则左子树上所有结点的值均小于它的根结点的值；
 *（2）若右子树不空，则右子树上所有结点的值均大于它的根结点的值； （3）左、右子树也分别为二叉排序树；
*/

class Node
{
public:
	Node(int data);

	void AddNode(Node *);
	bool Delete(Node * node, Node * parent);

	void PrintNode();
	bool DeleteNode(int data, Node * parent);
	~Node();

private:
	Node * m_left;
	Node * m_right;
	int m_data;
};

class BinarySortTree
{
public:
	BinarySortTree();
	~BinarySortTree();
	void Add(int data);
	bool Delete(int data);
	void Print();
private:
	Node * m_root;

};



#endif /* BINARYSORTTREE_H_ */
